-- *****************************************************************************
-- *                                                    *     _       _        *
-- *  AdaDecoupe                                        *    / \   __| | __ _  *
-- *  http://code.google.com/p/adadecoupe/              *   / _ \ / _` |/ _` | *
-- *  Radim Badsi & Célia Biguzzi - IG3                 *  / ___ \ (_| | (_| | *
-- *  Polytech'Montpellier                              * /_/   \_\__,_|\__,_| *
-- *                                                    *                      *
-- *****************************************************************************
-- *                                                                           *
-- * liste_plaques_finales.ads  -  Liste_Plaques_Finales                       *
-- * Fourni des services qui facilitent la création du plan de découpe à       *
-- * partir de la liste de commandes satisfaites.                              *
-- *                                                                           *
-- *****************************************************************************

with SList; with Plaques_Finales; use Plaques_Finales;
with Liste_Commandes; with Commandes; with Pieces; with Emplacements;
with Categories; with Liste_Plaques; with Plaques;

package Liste_Plaques_Finales is
	package Liste is new SList (Plaque_Finale); use Liste;
	subtype T_Liste is Liste.T_Liste;
	
    -- Génère la liste à partir de la liste de commandes et de la liste
	-- de plaques et morceaux de verre. Les commandes en attente et les
	-- commandes erronées sont ignorées.
	-- @param L_Plaques_Finales Liste de plaques
	-- @param Stock             Liste de plaques et morceaux de verre
	-- @param L_Commandes       Liste de commandes
    procedure Generer (
        L_Plaques_Finales : out T_Liste;
        Stock : in Liste_Plaques.T_Liste;
        L_Commandes : in Liste_Commandes.T_Liste);
    
    -- Cherche une plaque à partir de son numéro.
	-- @param L Liste de plaques
	-- @param Id Numéro de la plaque recherchée
    -- @return Liste de plaques qui commence à la plaque Id      
	function Cherche (L : T_Liste; Id : Natural) return T_Liste;
	
private
	-- Initialise la liste.
	-- Cette procédure doit être appelé AVANT toute modification de la liste
	-- de plaques et morceaux.
	-- @param L_Plaques_Finales Liste de plaques
	-- @param L_Plaques         Liste de plaques et morceaux de verre
    procedure Initialiser (
        L_Plaques_Finales : out T_Liste; 
        L_Plaques : in Liste_Plaques.T_Liste
        );	
end Liste_Plaques_Finales;